package com.zjmzxfzhl.modules.app.mapper;

import java.util.List;

import com.zjmzxfzhl.modules.app.entity.AppProj;
import com.zjmzxfzhl.modules.app.form.*;
import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zjmzxfzhl.modules.app.entity.AppTask;

/**
 * Mapper
 * 
 * @author 张森荣
 */
public interface AppTaskMapper extends BaseMapper<AppTask> {
    /**
     * 查询列表
     * 
     * @param page
     * @param entity
     * @return
     */
    public List<AppTask> list(IPage<AppTask> page, @Param("entity") AppTaskVo entity);

    /**
     * 需要展开的节点数据
     * @param parentId 父节点
     * @param level 展开的层级
     * @param parentLevel 父层级
     * @return
     */
    public List<AppTask> treeData(@Param("parentId")String parentId,@Param("level")Integer level,@Param("parentLevel")Integer parentLevel);

    /**
     * 统计任务数量
     *
     * @return
     */
    public List<TaskTotalVo> taskTotal(@Param("entity") AppTask entity);

    /**
     * 统计项目概括
     *
     * @param masterUserId
     * @param projId
     * @return
     */
    public TaskSumVo getTaskSun(@Param("masterUserId") String masterUserId,@Param("projId") String projId);

    /**
     * 计算数量
     *
     * @param entity
     * @return
     */
    public Integer selectRowCount(@Param("entity") AppTaskVo entity);

    /**
     * 计算里程碑逾期任务
     *
     * @param mptId
     * @return
     */
    public Integer timeoutCount(@Param("mptId") String mptId);

    /**
     * 计算里程碑未完成任务
     *
     * @param mptId
     * @return
     */
    public Integer notFinishCount(@Param("mptId") String mptId);

    /**
     * 查找任务甘特图数据
     * @param projId 父节点
     * @return
     */
    public List<TaskGanttVo> taskGanttData(@Param("entity") AppTaskVo entity);

    /**
     * 查找任务甘特图数据
     * @param projId 父节点
     * @return
     */
    List<MeetTaskVo> getMeetTask(@Param("projId") String projId);

    /**
     * 统计项目概括
     *
     * @param projIds
     * @return
     */
    public List<AppTask> getTaskList(@Param("idsArr") String[] idsArr);


    /**
     * 面包屑导航
     * @param taskId 子节点
     * @return
     */
    List<TaskCrumbVo> taskCrumb(@Param("taskId") String taskId);

    /**
     * 获取项目任务周期
     * @param projId
     * @return
     */
    List<TaskCycleVo> taskCycle(@Param("projId") String projId);
}
